home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-10-21 | 64.5 KB | 1,447 lines |
- Development Log for XaAES
-
- It's a big job....but someone had to do it :)
-
- [27/9/95]
- o Began coding XaAES kernal. Where to begin?
-
- [28/9/95]
- o Coded alert parser (seemed an easy place to start)
- o 3d sculpted dialogs.
- o VDI calls from the auto folder/MiNT.CNF now work.
- o Auto-folder detection.
-
- OK, perhaps I should get the kernal stuff working before messing about in
- the actual GUI bits....
-
- [2/10/95]
- o TRAP intercept now works and gets correct parameters from standard AES
- calls.
-
- [3/10/95]
- o TRAP intercept now returns values correctly.
- o Can now do form_alert calls to XaAES in place of GEM.
- o For testing, XaAES currently uses trap 3 instead of trap 2 to allow it to
- be debugged under MultiTOS (until I've got it working far enough to replace
- MultiTOS as my default enviroment).
-
- [5/10/95]
- o AES kernal now creates the XaAES.cmd command pipe & blocks waiting for
- instructions to arrive.
-
- [7/10/95]
- o appl_init() call now works from other process' and correctly creates
- a reply pipe for that application, then returns the application's AES id
- (which is (under XaAES) the same as the MiNT process id).
-
- [8/10/95]
- o Coded the kernal's opcode->function jump table structure.
- o Client's now block waiting for reply from the AES server, and actually
- get the right replies. As soon as client blocks on the reply pipe,
- MiNT task switches, allowing the AES server to get in - and other
- process' as well :) .
- o appl_exit() stub added.
- o form_alert() now works via the XaAES pipes interface.
- o Tested with XaAES as sole GUI server without MultiTOS - seems to work ok
- with two client applications at the same time.
-
- [11/10/95]
- o Mouse Server coded to handle mouse button clicks without busy waiting
- in the AES kernal - this also prevents clicks being missed (they may
- get delayed slightly, but never lost).
- XaAES spawns MOUSESRV at boot time, and MOUSESRV communicates with XaAES
- kernal via the standard XaAES.cmd pipe using a special op-code and
- AESCMD_NOREPLY mode (direct pipe access, not going via the trap interface).
-
- Now that the bare-bones kernal is up & running and the trap-to-pipe interface
- is working, I can get on and do the interesting bits :)
-
- [12/10/95]
- o Added evnt_button() code (allows multiple apps to wait on mouse events).
-
- [13/10/95]
- o Began coding windowing system. Not sure how to approach the look & feel
- here. I've got some funky sculpted 3D routines, so I'll use them until they
- get slammed for being to slow.
-
- [18/10/95]
- o Internal wind_find() now works
- o Moved over to a special mouse packet format for communication between
- MOUSESRV & XaAES.
- o MOUSESRV now reports coords, an double click timing is much better.
- o evnt_button() now correctly returns mouse coords to client app.
- o wind_create() and window_open() op-codes now supported.
-
- [20/10/95]
- o evnt_button() now only returns events for clicks on the client applications
- windows
-
- [23/10/95]
- o wind_close() now supported.
- o graf_mouse() now fully supported.
- o Mouse cursor enabled when XaAES run from the console without a standard
- Atari AES loaded.
- o Client reply pipe is now opened as a local file handle for the client and
- the server (via a new XA_NEW_CLIENT op-code), instead of as a pair of
- global file handles. This allows loads more clients to run at once, as
- the limited number of global file handles isn't used up. I've managed
- 30 concurrent applications with no slow-down at all!!!! This is looking
- faster than Geneva, and almost quick enough to catch MagiC (and pisses on
- AES4.1).
- o Added an new op-code XA_CLIENT_EXIT to tell the server to close it's end
- of a client reply pipe (allows re-use of the file handle for a new process).
-
- [24/10/95]
- o Click on widgets no longer generates a button event to the application, it
- now calls the appropriate callback to handle the widget.
-
- [25/10/95]
- o graf_handle() now supported
- o graf_mkstate() now supported
- o Window dragging is now supported (with a nice custom mover mouse shape).
-
- [30/10/95]
- o wind_set() now supported
-
- [1/11/95]
- o Moved over to a faster (and simpler) system for handling clients waiting for
- different types of event. I used to use a queue system, now I just set a flag
- in the client descriptor.
- o Coded AES messaging system.
- o evnt_mesag() now supported
-
- [3/11/95]
- o Close widget now sends WM_CLOSED message to the client, and changes state
- when clicked on.
- o Mover now sends WM_MOVED message to the client.
- o wind_set(..,WF_CURRXYWH,...) in response to a WM_MOVED message now works.
-
- [4/11/95]
- o Rectangle list generation implemented.
- o Background window moves work correctly.
- o Click on title bar now tops a window correctly.
-
- [5/11/95]
- o Fixed most of the redraw bugs with windows.
- o The client closedown routine now delete's all an apps open windows, and
- deletes pending AES messages.
- o Multiple application tests work fine - got 10 programs with two windows each
- running - no slowdown at all, and all seems to work fine.
-
- [6/11/95]
- o Finally tried running on trap 2 instead of trap 3, and found I'd forgotten
- that the VDI and the AES share a trap - oops. Added code in the low-level
- handler to field VDI requests to the old trap2 vector. It's a little (well a
- lot) of a kludge
- - there's even a spot of self modifying code in there.....but it does work.
- o Linked the test app with ordinary GEM libraries and test ran. The same
- executable definitely runs under AES4.1, TOS4.02 and XaAES without any
- problems - so it's looking good :).
- o Stopped using trap 3 for testing now that enough of the system is working to
- interact with.
- o wind_get() now supported.
- o wind_set(..,WF_BOTTOM,...) added.
- o wind_find() now supported.
- o Windows can now only be moved if their MOVER attribute is set (even if they
- have a title bar).
- o Coded screen and mouse locking.
- o wind_update() now supported.
- o Using wind_get(...,WF_FIRSTXYWH,...) to walk the rectangle list now works.
- o Added compile time switch FORCE_WINDOWS. If set to 1 then user operations on
- windows are done immediately, and the client program is sent a message just
- to say that it has happened (allows windows from apps that are deep in
- thought to be shifted around while we wait for the app to get back to us).
- o Added the resizer widget.
-
- [7/11/95]
- o Each client app can now have it's own totally seperate mouse cursor shape.
- The one that is actually used is determined by the owner of the top window
- - or if there are no windows open, then by the usual GEM free-for-all method.
- As soon as a window is opened, the owner's cursor takes over.
- o wind_set(..,WF_NAME,...) now works (ish).
-
- [8/11/95]
- o WM_REDRAW messages are now sent to clients when a redraw is needed.
-
- =================================================================
- ** MINIX PARTITION CRASHED **
- ** Gotta redo the AES messaging - I should backup more often. **
- =================================================================
-
- [12/11/95]
- o Got rid of the busy wait loop in the mouse server by using /dev/mouse to wait
- for the initial mouse click, then using VDI vectors to do the double click
- timing.
-
- [13/11/95]
- o Moved over to using /dev/mouse fully for the mouse handling.
- o Added a bit of a hack (using a stable, compatible method so don't worry) to
- insert coordinates and button states from /dev/mouse into the VDI's internal
- mouse handling routines.
-
- [14/11/95]
- o Ditched /dev/mouse again 'coz it's to much hassle to use at the moment.
- o graf_dragbox() now supported.
- o graf_rubberbox() now supported.
-
- [16/11/95]
- o Sizer widget now sends a WM_SIZED message to the client.
- o Fixed evnt_button() click to return correct keyboard shift status.
- o Click on top window's title bar sends window to the back using a WM_BOTTOMED
- message.
-
- [17/11/95]
- o Now using animated colour bitmaps for the standard GEM window widgets.
- Very nice looking :) It's also a fair bit faster than drawing them by hand
- like I was before, but is a great deal nicer than just having a single
- character like in other AES's.
- o User work area support added.
- o wind_get(.., WF_WORKXYWH, ...) now works.
- o Title bar highlighting for top window.
- o XaAES logo added to title bar, selected when moving windows.
- o Added FULLER widget.
-
- [18/11/95]
- o wind_get(.., WF_PREVXYWH, ...) now works
- o wind_get(.., WF_FULLXYWH, ...) now works
- o Click on FULLER widget now sends WF_FULLED message to client.
-
- [22/11/95]
- o Added horizontal and vertical scroll arrow widgets.
-
- [23/11/95]
- o Scroll widgets now send WM_ARROWED messages.
- o Added an active/pending widget attribute to the client descriptor to help
- support repeated sends from a widget that is held down (ie. the scroll
- arrows).
- o Fixed widget redraws when selecting in the background.
-
- [26/11/95]
- o Added slider bars to windows.
- o Much to my suprise, I found that to a great extent XaAES works in all screen
- modes - I've tested these modes:
- ST-Low
- ST-high
- 832*620 mono
- 800*600 4 colour
- 800*600 16 colour
- They all run, ST-Low is unusable - widgets are too big.
- The mono & 4 colour modes will need a little work, as all the 3D sculpting
- just comes out as black, but the widget bitmaps display OK (but in black
- & white) - a special mono version may be in order to make things more
- presentable.....
-
- [27/11/95]
- o Slider bars now actually slide :) - and they send the appropriate
- WM_HSLID/WM_VSLID messages to the client.
-
- ==============================================================================
- I've now missed the first release date I promised - this is a definitely a
- REAL atari program now ;)
- (I could even go on to found Microsod Mk2 at this rate)
- ==============================================================================
-
- [7/12/95]
- o Added a XaAES logo displayed at startup (actually it's a seperate program
- spawned during the boot sequence). Not very constructive I know, but it does
- look quite pretty
-
- [8/12/95]
- o Ditched the slider bar handling as I wasn't happy with it, and coded a
- replacement.
-
- [9/12/95]
- o XaAES changes it's process priority to -20 on startup (ie. highest priority).
- This improves performance loads, and doesn't slow down other programs, as
- XaAES spends most of it's time blocked anyway...but when you need it, it
- responds faster now.
-
- [10/12/95]
- o Got the Atari Compendium....
- o Fixed appl_init() to fill in the globl array correctly.
- o Added wind_delete() call.
- o Added wind_new() call.
- o wind_get/set(.., WF_HSLIDE, ...) now works
- o wind_get/set(.., WF_VSLIDE, ...) now works
- o wind_get/set(.., WF_HSLSIZE, ...) now works
- o wind_get/set(.., WF_VSLSIZE, ...) now works
-
- ==============================================================================
- Definitely suffering from binary bloat - the Kernal is now a 51K binary...
- ==============================================================================
-
- [13/12/95]
- o Added info bar widget.
- o wind_set(.., WF_INFO, ...) now works
-
- [20/12/95]
- o Added evnt_timer() handling via the MiNT SIGALRM signal.
- At the moment this only gives a resolution of one second, as I used the
- Talarm() function to implement it - I'll replace this with a custom
- vex_timv() routine that gives a better resolution at a later date as this
- makes things like LINES seem dead slow 'coz the shortest timeout from an
- evnt_multi() is 1 second.
-
- [28/12/95]
- o Added evnt_keybd() using the /dev/console device.
- o Added use of Fselect() to block on the console device & the AES message pipe
- at the same time.
- o Added evnt_multi().
- o Added a 'xaaes.cnf' file parser (compatible with GEM.CNF) that allows
- programs to be auto-run by XaAES when it starts up.
-
- [29/12/95]
- o Added rsrc_load() based on the resource handler from Steve Sowerby's AGiLE
- library.
- o Added rsrc_gaddr()
- o Added rsrc_free()
- o Debugged the keyboard handling & added a kludge to cope with the MiNT Fselect
- bug.
-
- ====================
- New Year's......2 weeks drunk!!!
- ====================
-
- [12/1/96]
- o Bit of a gap there..... ;)
- o Fixed the resource loader
- o Added the basic objc_draw() tree handler routine.
- o Added rsrc_obfix()
- o Added some extra debugging facilities - a DEBUG command in the xaaes.cnf file
- allows xaaes' console output to be re-directed to any file or device (I use it
- to dump debug to my Wyse terminal via the serial port).
-
- [16/1/96]
- o Added objc_offset()
- o Added wind_find()
- o Finally got a 'real' GEM program to run on XaAES - Calapt by Atari....
- o Changed widget sizing & placement to tidy things up a bit.
-
- [17/1/96]
- o Added objc_find()
-
- [18/1/96]
- o Added small font size support to object handler.
- o Added support for AES4.1 style GDOS font's in object tree's.
- o Made the default AES fonts & sizes a compile time option.
- o Fixed objc_find
- o Actually got some GEM programs to respond to their windowed dialogs!!!!
-
- [19/1/96]
- o Programs run from xaaes.cnf are now launched in their home directories.
- o Added G_ICON support to the object handler.
- o Fixed the fill styles to be correct for object tree display.
-
- [21/1/96]
- o Added G_CICON colour icon support to the object handler.
- o Added G_IMAGE support to the object handler.
-
- [23/1/96]
- o Included a new root_window into the code - this is to provide support for
- a desktop via the existing window system.
- o Added a new widget 'XAW_MENU' that any window can have - initially, only
- the root window has it & that behaves like the GEM menu (taking over the
- menu of the topped process).
- o Lattice C almost runs under XaAES now (thank god).
-
- [26/1/96]
- o Coded the menu tree handler to go with the XAW_MENU widget.
- o Moved the mouse data stream into it's own pipe, seperate from the AES
- command stream. This has improved mouse response a bit, as mouse
- packets now don't get bogged down in amongst the client data (if mouse
- & client packets arrive at the same time, they both get processed
- but the mouse gets done first).
- o Modified the mouse server to use the new data pipe, and improved single
- click response.
- o Added a check for mouse movement in the mouse server double click wait
- loop. Big improvement, click and drag now registers with no delay at all...
- o Added menu_bar() function
- o Added menu_tnormal()
- o Added menu_icheck()
- o Added menu_ienable()
- o Added menu_text()
- o Extened the XA_CLIENT structure to include a pointer to each client's standard
- GEM menu bar.
- o Added appl_getinfo()
-
- =====================================================================================
- Big landmark here. I finally got Lattice C to load & run correctly under XaAES
- - it's not a lot of use yet as I've not done a file selector or a lot of the
- forms code....but the bloody thing at least gives me the menu's and an edit window.
-
- Also, as I've managed to get to the bottom of the click-drag bug, the response time
- is way up - faster than AES4.1 at any rate!!!!
- =====================================================================================
-
- [28/1/96]
- o Added G_STRING,G_FTEXT & G_FBOXTEXT support to the object handler.
- o Added form_dial() call.
- o CTRL+ALT+TAB now swaps menu-bars between active clients.
- o Improved menu handling a bit.
- o Added menu_register().
- o Added graf_growbox()/shrinkbox()
- o Added graf_movebox()
- o Added appl_find()
- o My life is complete - Yukon (the solitaire game) runs under XaAES almost perfectly....
-
- [29/1/96]
- o Thanks to the MiNT mailling list for pointing out that there is a Tmalarm() call for
- millisecond resolution alarm signals....evnt_timer() is now much closer to the
- 'real thing'.
-
- [30/1/96]
- o Improved wind_calc() to actually get borders right without messing about examining
- each individual widget.
- o Small optimisation of the client redraw list handling to clip just to the work area
- instead of the window.
- o Added support for selected objects in the object tree hander.
- o Added support for 3D object flags in the object tree hander.
- o Added SHADOW flag support in the object tree handler.
- o Added G_BUTTON objects.
-
- [31/1/96]
- o Added graf_watchbox() function
- o Added form_button() function (no text field support at the moment)
- o appl_init() now supports the AES4.0 extended information about system font sizes.
- o Added a kludge for the strange illegal / undocumented call that TOSWIN makes on
- startup (you can find it in HANDLER.C).
-
- [1/2/96]
- o Fixed the keyboard & mouse response problem when using evnt_multi() with a timer
- - the un-used timers were staying in the delta queue if they hadn't gone off when
- the first alternative event occurred, and then interfering with subsequent key/mouse
- events.
-
- [5/2/96]
- o Added a simple console window (to be honest it's a bit crap....)
- o Added a new call 'short appl_pipe(void);' - this returns the file handle of the
- clients reply pipe so they can use non-blocking calls & handle piped replies
- themselves.
- o Re-worked the keyboard handling (again) to try and fix the lost characters problem.
- o The client reply pipe handle can now be found in the AES global array at global[12].
-
- =====================================================================================
- Well, no way to delay it any further.......techie beta 1 went out today.
- =====================================================================================
-
- [6/2/96]
- o Fixed a bug in drawing shadowed objects.
- o (ref:31/1/96) Thanks to Eric Smith for pointing out that the funny call that TOSWIN
- was making is in fact vq_gdos(), though why Atari had to add a special case call
- is beyond me......what was wrong with the ordinary VDI magic number?
- o Added support in the low-level trap handler for the '$c9' method of testing for an
- installed AES.
-
- [7/2/96]
- o Object-Tree widgets now work for types other than menus.
- o Added HIDETREE support to the tree display routines.
- o Now got a nice set of pretty icons for alert boxes....
- These are currently loaded from an external resource file - I'll embedd them when
- things are a bit more settled.
- o Re-worked the alert box handler (the other was just a debugging aid).
- Now supports all AES4.1 icons, and a couple more, returns the correct button,
- and uses proper 3D push buttons.
- o Alerts now displayed in windows, and don't block other processes.
- o AES owned windows now don't recieve topped/bottomed messages - they are done
- automatically. (eg. the AES owns alert windows, but doesn't need the messages, so
- we can just top & bottom the alert windows immediately)
- o Extended window attribute NO_REDRAWS stops windows from generating WM_REDRAW messages.
- o Added semaphore locking to the sensitive areas of the Trap handler (just in case).
- o Another extended window attribute, STORE_BACK. If this is set, a window will preserve
- it's own background (like alerts do under normal GEM). Useful for alert windows,
- where the client is asleep & cann't respond to redraw messages, and also to provide
- o Alerts use STORE_BACK window attribute.
-
- [8/2/96]
- o New search order for xaaes.cnf:
- .\xaaes.cnf
- u:\c\mint\xaaes.cnf
- u:\c\multitos\xaaes.cnf
- u:\c\xaaes.cnf
- o New keyboard combo's
- ALT+CTRL+TAB - swap app menus (not top app) (ok, that's an old one, but it's
- documented now)
- ALT+CTRL+L - list current clients to DIAGS/'debug device'
- ALT+CTRL+K - tidy up: cleans up after any apps that died without calling
- appl_exit()
-
- [9/2/96]
- o Added form_do() call (only creates & displays non-modal dialog window at the moment)
-
- [10/2/96]
- o Implemented the form_do() click handler. Doesn't know about editable text fields yet,
- but does do radio buttons, hidden, disabled, exit & touchexit.
- o Added scrap_read() & scrap_write()
- o New command CLIPBOARD in the xaaes.cnf file allows the default clipboard path to be
- set on startup.
- o Modified the initialisation code so that apps that weren't launched with shell_write()
- don't crash xaaes when they call shell_read().
- o Added a fix-up for menu trees, as some resource files don't have the right spacing &
- stuff (and my resource loader doesn't do them).
- o Added objc_change() call.
- o Form_dial(FMD_START) now creates the window to put a dialog in....this helps
- with programs that call FMD_START, then handle their own dialog interaction.
- o Argggghhhhh. Where was all my memory going? Found (and fixed) a massive memory leak
- in the menu handler. Every time a menu was dropped down, a new buffer was allocated
- - but I never got round to freeing them......sorted it out now though.
- o Fixed the transparent G_BOX problem in the object tree routines.
- o Fixed vertical positioning problem with small texts in dialogs.
- o The inherited default dialog background colour mode is now supported by the
- object tree routines.
-
- =====================================================================================
- Hmmm. Beta 1 was a bit of a disaster, very few people could make it work, and there
- were a lot of real problems with it. Things are much better now though, with several
- programs running perfectly (Z'Org for instance).
- =====================================================================================
-
- [11/2/96]
- o Extended the applications list to include what apps are waiting for.
- o Included a new ALT+CTRL+D key combo to dump system info.
- o Re-coded the mouse clicks handler, so the app that owns the mouse lock
- gets all clicks, even those outside of it's own windos.
- o Finished form_button()
-
- =====================================================================================
- The XaAES mailling list starts today.
- Had a play with the competition (oAESis), and found it doesn't run as many programs
- as XaAES does - but it does run some XaAES doesn't (like Lines for instance).
- Got XaAES to run Pagestream today, which cheered me up.
- Checked out the performance of XaAES compared to oAESis - oops....oAESis piss's
- all over XaAES in terms of speed....
- =====================================================================================
-
- [12/2/96]
- o Added a call_direct interface in the trap handler for functions that don't
- impact on main memory to any great extent.....this by passes the pipe's queue
- to call routines direct. I know, it's gonna be a pig to debug...but the performance
- gain you get from doing it is amazing - TOSWIN runs so fast I didn't believe it
- at first.... It doesn't have to be used for everything, just for common 'quickie'
- calls. NOTE: I've not used this generally at the moment to avoid memory ownership
- problems - and it makes things very unstable......
- o Re-coded wind_update to use semaphores & call_direct....first big improvement
- from the new system.
-
- [13/2/96]
- o Nicked the rc_intersect code from oAESis - it was better than mine.
- o Re-worked the rectangle list generation to use the above poached code.
- o Added loads more semaphore locking on various ops (mostly in c_window.c).
- o More work on the trap handler.
- o Appl_init() now allocates a private stack for use during AES calls.
-
- =====================================================================================
- Got Johan's GCC diffs - gotta find time to include them (probably over the weekend).
- Got Martin's Lattice diffs.
- =====================================================================================
-
- [14/2/96]
- o Applied Martin Koehling's diffs - here's his summary of what got fixed....
-
- ----Quote----
- This is my first take on hacking XaAES; a context diff (relative to
- the beta1 release) is appended to this message. [CRAIG NOTE: I've applied
- the diffs already.....]
-
- Summary of changes (I hope I didn't forget anything):
-
- a_handler.s:
- Modified the TRAP2 handler to use the XBRA protocol (no
- more self modifying code, too).
- a_handler.s:
- BUGFIX: TRAP2 handler now saves *all* modified registers (AFAIK,
- GEM AES does the same, and some APPs/TSRs rely on this [undocumented]
- behaviour)
- handler.c:
- Modified hook_into_vector to use Setexc() instead of directly
- hacking the exception vector table; patch_handler() is no longer
- needed. New function unhook_from_vector().
- handler.c:
- Added __saveds keyword to XA_handler(), thus eliminating the need
- for `far' data.
- appl_init.c:
- Removed a few `far' keywords.
- resource.c:
- BUGFIX: improved obfix() to be more GEM AES compatible (fractional
- offsets, ob_width==80 special case).
- std_widg.c:
- BUGFIX: wind->widgets[XAW_MENU].w wasn't initialized at all.
- NOTE: there seems to be still another missing-initialization bug
- lurking somewhere - when the FASTLOAD bit is *set*, xaaes.tos
- sometimes simply hangs when I start it from the desktop; this
- does *not* happen when xaaes.tos was started from mint.cnf
- (->clean memory) or when the FASTLOAD bit is *cleared*...
- bootup.c:
- If there are less than 16 colors (or was that `colours'? ;-)) available
- (like on my monochrome monitor), initialize display.dial_colours
- differently; the display is still terribly ugly, but at least now
- I can *see* something besides black text on black ground... :-)
- bootup.c:
- BUGFIX: use vqt_attributes() (instead of vqt_extend()) to initialize
- display.c_max_w/display.c_max_h - this yields the correct values
- 8 and 16 for the `monochrome' system font.
- bootup.c:
- BUGFIX: use obfix() in SYSTEM_MENU initialization; don't forget
- SYSTEM_MENU[16] :-).
- bootup.c:
- Use a different method for AUTO folder detection: after an
- appl_init() call, check if global[0] (AES version) is still
- zero - this indicates that no AES is present...
- (This method has been documented and successfully used for
- years, and it's inituitively "cleaner" than the original one; in
- addition, it obviates the need for the isauto.s module.)
- (appl_init() should have been called anyway since graf_handle()
- is called later...)
- bootup.c:
- New function `Cleanup()' that closes workstations, restores
- the TRAP vector, calls appl_exit()...
- Still quite incomplete (and currently unused anyway).
- Others:
- Some changes to header files to reflect the above modifications.
- Added `#include <memory.h>' to a few modules to get rid of `No
- prototype declared for function' warning (some are still missing).
- ----Un-Quote----
- All of the above went in apart from the obfix() stuff and register save mod,
- which I'd already done.
- Seem's to have improved stability a lot, especially for call-direct ops, and
- there's a lot of other good stuff like the XBRA support in there as well.
-
- [15/2/96]
- o Fixed a bug in the draw_object_tree() routine (HIDETREE wasn't handled properly).
- o Enabled direct call for more op-codes to improve performance.
-
- [16/2/96]
- o Included Mario Becroft's monochrome widget set as a compile time option.
- o Tested XaAES in mono for the first time in ages....hmmm. Certainly works,
- but you cann't see windows except for the widgets. Needs some work I feel....
-
- [17/2/96]
- o Added shel_find() (uses the standard MiNT enviroment)
- o Added shel_envrn()
- o New keyboard combo ALT+CTRL+R - attempts to recover control of a hung system.
- o Added mode 1 (SWM_LAUNCHNOW) support to shell_write().
- o Added a SIGCHLD handler to spot exitting children.
- o appl_exit now calls Pwait() to get the app exit status
-
- [18/2/96]
- o Removed all the delta-queue stuff, and replaced the timer events with a more
- advanced and versatile method based on Evan's idea of using Fselect time-outs instead
- of SIGALRM signals. This does away with having to maintain the delta queue & simplifies
- cancelling evnt_multi. It does mean that the trap handler is a bit more complex now...
-
- =====================================================================================
- Beta 2 released via Johan's ftp site today
- =====================================================================================
-
- [19/2/96]
- o Added a check for missing system resource file (exit gracefully instead of bus error).
- o Fixed a bug in the SIGCHLD handler (wasn't extracting the child pid correctly)
- - dieing children are now caught correctly and clean-up happens automatically.
- o Added new 'About XaAES...' dialog.
- o Added handler for clicks on the system default menubar - only 'About' is actually
- used at the moment, but at least the code is there now.
- o Fixed the CTRL+ALT+TAB app switch so that you can always get to the system menu if you
- need to.
-
- [20/2/96]
- o Integrated Martin Koehling's 2nd set of diffs - here's Martin's list of changes:
-
- ----Quote----
- bootup.c:
- Remove Semaphores in Cleanup().
- Print an error message and call Cleanup() & exit when opening of
- KBD_device failed.
- Ditto when LoadResources("system.rsc") failed.
- (The latter would have saved me two to three hours of bug-hunting
- yesterday...)
- resource.c:
- Removed auto-freeing of existing resource in rsrc_load handler;
- under GEM AES, programs *can* have multiple resources.
- (This function still needs some more work - in particular,
- resource memory should *always* be owned by the APP!)
- xa_aes.prj (separate file):
- Removed all local compiler options - apparently they had just
- accumulated over time and served no practical purpose...
- (problem of of the Lattice IDE)
- [CRAIGS NOTE: They are a side effect of how I locally turn on diagnostics output
- when I'm debugging: I only define GENERATE_DIAGS for the modules I'm working on...]
- Others:
- Lots and lots of added #includes; XaAES should now compile without
- any warnings even with `Enforce function prototypes' enabled - this
- should make porting XaAES to other compilers (or changing the `int'
- size, or changing the parameter passing conventions) somewhat
- easier...
- ----Unquote----
-
- ...And yes, it does compile with no warnings even with Enforced prototypes.
-
- o Added a new auto-redraw callback function to windows, to allow the work area
- to be redraw automatically without sending redraw messages or walking the
- rectangle list. This is mainly aimed at displaying the root window.....but it
- could be useful for other things?
- o Added the desktop/root window object tree.
- o Made the root window a NO_MESSAGES type window - we had a memory leak there, as
- the AES never checks for messages to itself, redraws were just building up...and
- it can redraw itself using auto-redraw, so there is no to send messages.
- o Removed the erase_nontopped_window() function as the desktop support
- made it redundant.
- o Changed the way window redraws are calculated in display_windows_below()
- to prevent all windows below being drawn even when they are obscured by
- other windows.
-
- [21/2/96]
- o Added wind_get(...,WF_NEWDESK,...)
- o Added wind_set(...,WF_NEWDESK,...)
- o Integrated Martin's bugfix for the semaphores version of wind_update() function
- (with a small fix to a bug in Martin's version).
- o Added a new wind_set() mode WF_AUTOREDRAW. This allows a windows auto-redraw function
- to be set. Takes a pointer to a WindowCallback type function, passed in
- parm1 (hi word) & parm2 (low word):
- short my_redraw_function(XA_WINDOW *window)
- {
- /* Do the redraw, using the coords from the XA_WINDOW structure */
- }
-
- void set_a_redraw(void)
- {
- WindowCallback rd=&my_redraw_function;
- wind_set(my_window_handle, WF_AUTOREDRAW,
- (unsigned short)((rd&0xffff0000L)>>16), (unsigned short)(rd&0xffffL), 0,0);
- }
- o Added PROGDEF support to the object tree handler.
- o Went over most of the source replacing vs_clip() with set_clip() 'coz the
- PROGDEF's needed to know the current AES clipping rectangle :(
- (I'm dead pissed off about that, but cann't see a way round it).
- o Added appl_write() function - direct result is that AV-PROTOCOL applications
- (GEMVIEW for example) now work under XaAES when run with Thing.
-
- =====================================================================================
- Hey!!! 'Thing' now display's it's desktop & directory windows properly, with colour
- icons, backdrops, drag & drop onto the desktop....the works!!!
-
- The redraw algorithm is still very iffy - the whole desktop gets redrawn far to
- often.
- =====================================================================================
-
- [22/2/96]
- o Improved the menu_xxx functions to prevent the redrawing of the whole desktop
- each time.
- o Added wind_set(.., WF_STOREBACK, ...) to allow user programs to set their own
- store background property.
-
- [24/2/96]
- o Hacked around with the window redraws to get rid of some more root redraws.
- o Fixed graf_handle() to give correct character cell sizes.
- o Root window clicks now go to the current owner of the desktop (so clicking on
- Thing's desktop icons works).
- o Fixed form_button() - Thing's dialogs work now.
-
- [25/2/96]
- o Ran Johan's xlcc2gcc program over the source tree to remove all C++ style
- comments.
- o Applied about 2 thirds of Thomas' diffs.
- - most notable fix is that shel_wrt() works properly now (mode 0 at least).
-
- [2/3/96]
- o Sorted out some problems with window list locking, so that wind_get()
- could move over to direct call. This fixes the major speed problem
- XaAES had, and also seems to have made things a lot more stable (but I
- always say that don't I ?).
- o Removed the funny sliders that everyone was complaining about.
-
-
- [3/3/96]
- o Added appl_search()
- o Fixed problem with window slider paging (added a click behaviour to the widgets).
- o Added drop shadows to windows.
- o Reduced size of object shadows to 2 pixels to match GEM (some apps make assumptions
- about this when storing backgrounds).
- o Object tree handler: CICON's will use nest best colour depth if an exact match cannot
- be found (eg. if there is a 16 colour icon, it will be used in 256 mode if there is no
- 256 icons).
-
- [4/3/96]
- o Menu's only redraw sections that are changing rather than the whole menu.
- o Changed to a more 'GEM' method of highlighting menu options.
- o Fixed CICON's (again). Resource loader now uprates all CICON's to the current
- screen colour depth on loading (eg. 4 bit plane will convert to 8 bit plane when
- run in 256 colour mode). There's still some nasty bugs in this code....
-
- [5/3/96]
- o Applied Martin Koehling's appl_getinfo() patch.
- This fixed a couple of problems with one or two apps - notably, 7UP & Kandinsky
- work now because of this...
-
- ===============================================
- HARDDRIVE CRASH
- - Luck recovery....
- ===============================================
-
- =====================================================================================
- Beta 3 released.
- =====================================================================================
-
- [8/3/96]
- o Fixed form_button() so that objects without their selectable attribute set still
- return if they are EXIT or TOUCHEXIT. This means that Thing's scrolling lists in
- dialogs now work correctly.
-
- [9/3/96]
- o Started adding underlying support for keyboard entry into forms.
- o Added a new callback attribute for windows to handle keyboard entry. If an edit field
- is specified in form_do() then this attribute is set for the window containing the
- form.
- o New ob_flag bit IS_EDIT tags the current edit field so that the object drawing
- routines know to show the cursor.
-
- [10/3/96]
- o Added support to the form click handler to change the current edit field if an EDITABLE
- object is clicked on.
- o Fixed non-3D button drawing.
- o Fixed radio button redraw.
- o Fixed the CTRL+ALT+R 'recover control' combo so that XaAES doesn't crash when it's used.
- o Fixed appl_search() to not return illegal values for AES id's.
- o SIGCHLD handler doesn't try to do any clean-up now, it just sends the
- XA_CLIENT_EXIT message to the kernal, and the standard cleanup handles it.
-
- [11/3/96]
- o Fixed shel_write() TOS program launch to drop the correct info into the
- TOSRUN pipe for TOSWIN to run the TOS program for you.
-
- [20/3/96]
- o Applied 2 sets of diffs from Martin (see 5diff & 6diff).
-
- [21/3/96]
- o Coded the keyboard handler for form_do(). The following are supported:
- Field selection:
- TAB or DOWN-ARROW - next field
- UP-ARROW - previous field
- SHIFT+DOWN-ARROW - last field
- SHIFT+UP-ARROW - first field
- Cursor movement:
- RIGHT-ARROW - cursor right
- LEFT-ARROW - cursor left
- SHIFT+RIGHT-ARROW - cursor to end of field
- SHIFT+LEFT-ARROR or
- CLR/HOME - cursor to start of field
- Editting:
- ESCAPE - clear field
- DEL - delete character under cursor
- BACKSPACE - delete character behind cursor
-
- other keys go straight into the text field.
-
-
- [22/3/96]
- o Added the display function for the iconify widget.
- o Appl_getinfo(11) modified to indicate presence of iconifier widget.
- o Added wind_set(.., WF_ICONIFY, ...) support.
- o Added wind_get(.., WF_ICONIFY, ...) support.
- o Click on iconify widget now sends WM_ICONIFY message to client.
-
- [23/3/96]
- o Added wind_set(.., WF_UNICONIFY, ...) support.
- o Added wind_get(.., WF_UNICONIFY, ...) support.
- o Click on iconify widget of an iconified window now sends WM_UNICONIFY message
- to client.
- o Double-click on title widget of an iconified window now also sends WM_UNICONIFY message
- to client.
-
- =====================================================================================
- After discussing it with Martin, we've decided to ditch the big clients[] array in
- the near future. The use of the Martin's Pid2Client() macro is an interim thing. Once all
- direct access to the clients[] array has been replaced with Pid2Client() we can replace
- the array with a dynamic structure that doesn't swallow 120K of RAM to no good reason.
- =====================================================================================
-
- [24/3/96]
- o Another big diff from Martin Koehling:
-
- ----Quote----
- objects.c, objects.h, many *.c:
- BUGFIX:
- Changed parameter list for set_clip() from `x1,y1,x2,y2' to `x,y,w,h'.
- Changing all set_clip() calls accordingly removed many of the `+1'
- errors, and saved a few bytes, too.
- objects.c:
- clear_clip() now doesn't really turn clipping off but only sets the
- clipping rectangle to the entire screen - this is safer since
- otherwise memory areas outside the screen might be overwritten by
- buggy code! (Probably depending on function called and VDI version...)
- rectlist.c:
- BUGFIX:
- Since the redraw problems had actually gotten *worse* after the
- set_clip() changes (some bugs had apparently cancelled each other),
- I first replaced rc_intersect() with a time-proven version; but this
- wasn't the problem...
- (I kept the new version because it's more readable and actually
- about 50 bytes shorter than the original. :-))
- The *real* bugs were in generate_rect_list(): after removing
- several instances of `-1'/`+1', redraws work *much* better now...
- (There are still a few problems - I suspect bugs in the calculation
- of window work/border areas...)
- shellwrt.c, new_clnt.c, bootup.c:
- BUGFIX:
- shel_write() used to free the command line and the command
- tail - much too early!
- Moved this to XA_client_exit().
- wind_fns.c:
- Added test-and-set-mode to wind_update() (BEG_UPDATE|0x100,
- BEG_MCTRL|0x100); would somebody please try this out? ;-)
- appl_ini.c:
- EXPERIMENTAL:
- Put AES version number 1.4 (instead of 4.1) into global[] array;
- possibly some programs are crashing because they expect MTOS (AES 4.x)
- features to be present that are not yet implemented???
- <CRAIG'S NOTE: This isn't such a good idea so I've #if'd it out of the binary>
- getinfo.c:
- Some changes to info_tab[]:
- - mode 4: indicate that appl_search() is implemented
- - mode 10: indicate shel_write() modes supported
- - mode 11: indicate `wind_update() check and set present'
- getinfo.c:
- BUGFIX:
- appl_find(NULL) should returns the AES process id of current
- process, *not* the menu bar owner - at least according to all
- documentation I have access to.
- getinfo.c:
- appl_find("?AGI") now returns 0, indicating that appl_getinfo()
- is understood by the current AES - normally this function is
- only present in AES versions >= 4.0 (i.e. MTOS; old AES versions
- display an "Illegal Function" alert instead).
- The "?AGI" feature was invented by Martin Osieka for his
- AES extension WINX, which adds appl_getinfo() (and other
- things) to "old" AES versions; MagiC 4.0 (AES 3.99!) supports
- "?AGI", too.
- The proper way of checking for the presence of appl_getinfo()
- is:
- `has_appl_getinfo = (global[0]>=0x400) || (appl_find("?AGI")==0) ;'
- appl_ini.c, c_window.c, new_clnt.c:
- Replaced direct accesses to clients[] array by Pid2Client() calls.
-
- ----UnQuote----
-
- o There was one thing in that diff that Martin seems to have forgotten he did
- - if you hold down either shift key during startup, XaAES will swap to medium
- res if it was being started in Low Res. It's not quite the all singing all
- dancing res change we talked about on the mailling list yet, but it's sort of
- a start isn't it?
- o Fixed window drop-shadow bug.
-
- [27/3/96]
- o Added objc_edit()
- o Added form_keybd()
-
- [28/3/96]
- o Added Martin's appl_ini() patch to get round an apparent MiNT pipe deletion bug.
- (this is what was stopping lines.prg from working, see 8diff for details)
- o Debugged objc_edit()
- o Mono icons now display their text field correctly.
- o BOXTEXT's now get border properly.
-
-
- [29/3/96]
- o Added falcon video mode switches to the command line:
- -video 0->3
- where:
- 0 = 80 column, non-interlace, mono
- 1 = 80 column, non-interlace, 4 colour
- 2 = 80 column, non-interlace, 16 colour
- 3 = 80 column, non-interlace, 256 colour
- These don't work very well at the moment, but do get round the NVDI2.5 problem.
- o Added Shutdown option to the XaAES system menu. This isn't 100% yet, but it's a start...
- Shutdown will kill all clients, and exit XaAES - but you cann't get back into XaAES
- again at the moment, so I've obviously missed something....
-
-
- [31/3/96]
- o Added new functions (OBJECT*)CloneForm(OBJECT*) and (void)DeleteClone(OBJECT*) to
- create copies of the resource templates in SYSTEM.RSC (this stops multiple clients
- using alerts from interfering with one another).
- o Alert box handler now uses the CloneForm/DeleteClone routines.
- o Added proper XBRA unhook to restore the correst AES trap vector.
- o Major change to the architecture of XaAES:
- The XaAES.cmd pipe is no longer a global file handle. The reason for this is to ensure
- that all XaAES's pipes get deleted when the system is shutdown - otherwise if you
- restarted XaAES without re-booting, the new server couldn't open the command pipe.
- The new approach is to have XaAES.cmd as opened by one process at a time, and then only
- during appl_init(). The process uses XaAES.cmd as an 'introduction pipe' to send an
- XA_NEW_CLIENT message, then closes it again. The main body of commands comes
- from what used to be the clients reply pipe (this is now a bi-directional pipe), and
- the kernal selects on all the client pipes at the same time.
- This is a pretty major change, and I've only done it because several people asked
- for a clean shutdown/restart procedure without having to reboot the machine. Ok, you've
- got it.
- o 'Shutdown' works correctly, and XaAES can be re-started as many times as you like (only
- one server at a time though) without rebooting the machine (from a command line).
- o MOUSESRV opens it's comms pipe as O_RDWR to allow it to be deleted again.
- o SIGINT and SIGQUIT are now caught and cause a graceful shutdown (exactly like selecting
- the 'Shutdown' menu option).
-
- =====================================================================================
- Beta 4 released.
- =====================================================================================
-
- [2/4/96]
- o Johan mailled me James Cox's MooseServ replacement for the MOUS_SRV mouse
- program (I missed it when he first posted it). It's a great improvement
- over the original that I wrote, a proper MiNT device, all coded in
- assembler - the full works. It's gotta become the standard XaAES mouse
- handler starting from now - mainly because it does away with the busy wait
- loop in the mouse handler, but also because double click response is
- much better than it was in my version.
-
- [9/4/96]
- o Fixed graf_watchbox() - sorry, that was an error in Atari Compendium
- as regards where parameters were passed (that was why Everest didn't work up to
- now).
- o Added some code to not select objects that aren't selectable in
- form_butn().
- o Added CH_EXIT message to the SIGCHLD handler. This is now sent to the 'AES parent'
- of an app. This is different to the MiNT parent - all client apps should be
- children of the XaAES server, bgut their 'AES parent' is the app that launched them
- with shel_write().
- o Shel_write() mode 1 now blocks the client (as it should), and the SIGCHLD handler
- wakes it up again when the child exits.
-
- [12/4/96]
- o Johan found the problem with running MGIF, so I've fixed it - menu_text() was just
- changing the pointer to the menu text, instead of copying the text over the existing
- data (as it should have done).
-
- [16/4/96]
- o Fixed a bug in shel_write() - XaAES was corrupting the clients copy of the command
- when it launched the new program, so if the client attempted to re-use the command
- string it was invalid (this showed up when running AntMail 0.7.5).
-
- [17/4/96]
- o Added CHECKED & CROSSED support to the object display routines.
- o Added the new XaAES/oAESis extended shel_write() stuff to allow explicit setting
- of user/group id's when a child is launched. Haven't done the UID/GID inheritance
- stuff yet (that will need a little more work).
-
- [18/4/96]
- o Added tear away menu bar's (CTRL+click on a menu to tear away). This isn't a final
- thing, it's just really to show how easy it is to add this sort of thing to XaAES.
- o Added support for NO_WORK window attribute, so a window can have no work area at all.
- o Alert box's & form_do() now use NO_WORK windows.
- o Alert box default button set correctly (although the keypress is ignored at the moment).
- o Disabled the OS_SPECIAL memory patch (new switch in XA_DEFS.H 'DODGY_MEMORY_PROTECTION')
- as I think it causes a massive memory leak in the MiNT kernal.
-
- [19/4/96]
- o Various fixes to the object tree drawing routines.
- - Finally sorted out the black bars problem.
- - Selected text is now highlighted.
-
- [25/4/96]
- o The owner of the screen update flag now recieves all mouse input even
- if it hasn't grabbed the mouse flag.
- o The owner of the screen update flag now recieves all keyboard input
- as well. These two patches help several programs to work better
- with the Selectric fileselector (notabley, Egale works now).
- o Replaced form_do.c, forms.c & objcedit.c with Johan's patched
- versions - the form handling should work a little better now.
- o Added hide/show cursor to the objc_draw & objc_change functions
- - this gets rid of almost all the 'mouse droppings' that we were
- suffering.
-
- [26/4/96]
- o Got a new version of the Moose (mouse) server from James Cox. The actual device
- driver is now a MiNT loadable device (XDD) and remains loaded all the time. Eventually
- we'll scrap the mousesrv program and use the device directly :)
-
- [27/4/96]
- o All OS functions now return unsigned long instead of short.
- o Removed the 16 tick minimum on event timeouts - you can now do a timeout with 1.
- o appl_init() & appl_exit() now block the client until the server process recieves
- the (de)registration message.
- o appl_init() & appl_exit() no longer special cased (that was leftover from before
- I added the call direct interface).
-
- [30/4/96]
- o Applied Martin's object display diffs:
-
- ---Quote---
-
- xa_globl.h:
- - Added macros FirstClient() and NextClient() - useful for all
- functions traversing the entire client table (used in bootup.c
- only at the moment).
-
- objects.c, draw_2d_box(): **************Martin's version of this is a bit duff [Craig]
- - Rewritten completely (outside/inside borders were reversed [IIRC],
- outside borders looked rather strange).
-
- objects.c, display_object():
- - Lots and lots of changes - object appearance should match
- GEM AES much better now!
- - Rewrote SELECTED handling in mono (<16 colors) mode - this
- fixed the "object text in SELECTED objects vanishes in mono
- mode" problem.
- - Shadowing and outlining objects now works correctly.
- - Fixed colorword->opaque handling (which does only apply to
- text within an object, not to object body).
- - Slightly changed USERDEF handling: the user function is
- supposed to return the ob_state bits that still need to
- be handled by the AES; since all documentation on this
- topic is *very* vague (and earlier experiments weren't
- conclusive either), I'm not *quite* sure if my change
- is correct - but it doesn't appear to break anything!
- - Added support for object states CHECKED, CROSSED, DISABLED.
-
- ********* NOTE: *********
- I did *NOT* test all of this in ">=16 color" modes yet - but
- I hope my changes didn't break anything; 3D objects should be
- unchanged, too...
- COLOR USERS: PLEASE TEST THIS!
-
- objects.c, draw_object_tree():
- - Added v_hide_c() and v_show_c() - the caller doesn't need to
- call this anymore.
-
- form_do.c, click_object_widget():
- - It wasn't possible to de-select a SELECTED object by clicking
- on it - on the screen it was de-selected, but internally the
- SELECTED bit got set again!
-
- forms.c, XA_form_button():
- - Fixed width/height parameters of a set_clip() call (overlooked
- last time).
- - Don't SELECT a TOUCHEXIT object if it isn't SELECTABLE, too.
- (Actually, there are still several other special cases not
- handled quite correctly - but I think this can wait...)
-
- frm_alrt.c, do_form_alert():
- - Set interior color of alert box to "system background color"
- in "monochrome" (<16 colors) mode.
- - Make alert buttons 2D in monochrome mode (color buttons are
- still "black text on black background")
-
- mousesrv.c:
- - Added a SIGTERM handler, allowing to restore interrupt vectors
- before termination.
- (I'm not quite sure why nobody reported any problems with the
- SHUTDOWN handling - I regularly had crashes after terminating
- XaAES if it was started from the DESKTOP; possibly some AES
- versions are more forgiving in this area than my AES 3.2
- (TOS 2.06)??) (I'm still having trouble if I restart XaAES
- after a SHUTDOWN - but at least it works most of the time...)
-
- BTW: James Cox' moose server probably presents a *major*
- problem in this regard - it installs a device driver, and
- MiNT has *no* way to cleanly de-install one of those... :-(
- (*PLEASE*: correct me if I'm worng!!:-))
- This means basically that the server must *never* be killed;
- in addition, there needs to be a way (Fcntl?) to disable
- the server when XaAES exits, and to re-enable it when XaAES
- is started again...
-
- bootup.c:
- - Send SIGTERM instead of SIGKILL to the mouse server - SIGKILL
- can't be caught!
- - Wait for the mouse server's termination before proceeding
- (important!!!).
- - Send SIGTERM instead of SIGKILL to apps, too; probably XaAES
- *should* wait for the applications' termination, too - but I'll
- leave this alone for the moment...
- - Pass *physical* (not: virtual) workstation handle to mouse server;
- the docs are not very clear on this point - but this *seems* to
- be cleaner, since the VDI interrupt vectors are not a "per-
- vworkstation" resource...
- - Simplfied F_OS_SPECIAL setting: "u:\proc\.-1" refers to the
- current process (as documented in Appendix B of the MiNT 1.12
- docs).
- ********* BTW: re: "Why does XaAES still crash with memory
- protection on?"
- Craig: did you try setting the protection bits of MOUSESRV.TOS
- to SUPER? This is necessary since it contains interrupt handler
- code...
-
- logo.c:
- - Added WM_BOTTOMED/WF_BOTTOM defs (not defined in my aes.h).
-
- ---UnQuote---
-
- [3/5/96]
- o Finally got things working properly again after putting in Martin & Johan's
- form & object patches.
-
- [4/5/96]
- o Added loads of memory allocation error checking to try and cut down on crashes
- - seems to have improved things a bit.
- o Fixed Johan's objc_edit() and forms keyboard handling code to correctly interpret
- valid characters (was locking out some perectly admisable characters).
- o Another small change to the client startup/shutdown stuff - CH_EXIT is now sent
- again (parent field was being invalidated to soon). Multiple shutdown/restart
- sequences seem to work pretty well now.
- o Extended client list reporting (when debug enabled) to show more info on each client.
-
- [5/5/96]
- o Added support for Braodcast (mode 9) shel_write()
- o Added support for Shutdown (mode4) shel_write()
- o Added support for Desk Accessory loading in shel_write() (mode 3).
- - actually, I blagged a couple of lines of assembler from oAESis 0.70
- to trick accs into loading correctly. Accs load & seem to behave correctly,
- but you cann't open them yet (they aren't in the menu anywhere yet).
- o House keeping now gets done after a 2second inactivity OR 5000 OS request.
- This helps find dead clients more reliably....
-
- [6/5/96]
- o Loaded applications & ACCs are displayed in the desk menu, with a tick next
- to the one that owns the current root window menubar.
- o ACC's are autoloaded on bootup. New xaaes.cnf directive ACCPATH allows you to
- set the path that ACC's will be loaded from. (default is c:\)
- o ACC's are tagged in the desk menu so you can see which they are.
- o Clicking on an ACC's menu entry sends AC_OPEN to the it.
- o Clicking on an APP's menu entry gives it the root window menu & desktop.
-
- [7/5/96]
- o Put in Johan's new rectangle list handling code.
- Here's Johan's comments on what he's done:
-
- ---Quote---
- In 'rectlist.c' the old rc_intersect has been optimized a bit and there
- are two other new static functions with almost the same function.
-
- For external use there are two new functions:
- create_work_list - Creates a second rectangle list, covering only the
- parts that are within the window's work area.
- invalidate_rect_list - Marks all rectangle lists below a specified window
- (including that one) as invalid. The rectangle
- objects are deallocated, naturally.
-
- Two other static functions take care of rectangle object allocation and
- deallocation.
-
- The diff files mostly remove unnecessary calls to generate_rect_list() and
- add invalidate_rect_list() calls where needed.
- ---Unquote---
-
- o Added the check for out of clip objects that Johan suggested in
- draw_object().
-
- =====================================================================================
- Beta 5 released.
- This is an obscenely fast release. It's now officially a shit load
- faster than AES4.1 (my original aim). This is all thanks to Johan's
- work on the rectangle lists and the object clip fix (in the case of
- Thing's directory window scrolling), as well as my re-vamped
- evnt_multi().
- =====================================================================================
-
- [8/5/96]
- o Stopped root window redrawing when first real window is opened.
- o Fixed display bug when topping windows.
- o Stopped whole root window redrawing when last window is closed.
- o Added undocumented entry in applications global[] array that the EGEM library
- relies on (naughty of them), so ESSDecode, LHAshell, et al should all work now.
- (thankyou to the oAESis guys (namely Christer G) for sorting that out).
-
- [9/5/96]
- o Fixed mouse click drop through when clicking on menus.
- o Menu titles are un-highlighted after selection.
- o STORE_BACK windows (ie. dialogs) now stay on top, and you cann't
- move windows that are behind them.
- o Fixed NO_MESSAGES type windows (dialogs again) when used with
- Johan's rectangle list code.
- o NO_WORK windows don't have the window borders drawn, they just get a
- plain filled rectangle instead.
-
- [10/5/96]
- o Small patch to shel_write() to make detecting type of program to launch in mode 0
- work a little better.
- o Can now move windows off screen.
-
- [11/5/96]
- o Applied Martin Koehling's latest diffs:
- resource.c:
- FixColourIconData() had a serious bug: if
- c->num_planes > display.planes, the end of an Mxalloc'ed
- memory block was overwritten; this was probably responsible
- for spurious crashes in `lowcolor' resolutions - for example,
- on my Mega ST XaAES Beta 0.5 *always* crashed during initialization
- if it was run from MINT.CNF!
- resource.c:
- FixColourIconData() had another bug: the destination MFDB
- wasn't properly initialized (fd_stand in one case, fd_addr
- in another one) before vr_trnfrm(); I can't explain how
- this code could work at all...
- xa_defs.h:
- During bug hunting, I added:
- #define malloc(m) calloc(m,1)
- I think it's a good idea to have allocated memory blocks
- initialized to zero - at least during debugging!
- xa_globl.h:
- Added a typecast to get rid of a syntax error (Pid2Client(pid)->...
- didn't work).
- objects.c:
- draw_2d_box() still has problems with *outside* borders; I've
- added my version (which is modeled closely after Atari's own
- algorithm) for easier comparison - if any shift key is pressed,
- the old version is used, otherwise my version...
- (No, I don't propose to leave this in XaAES 1.0!;-))
-
- NOTE: Martin's version of draw_2d_box() doesn't work, so I've not put it
- in.
-
- o Widget bitmaps are now stored as icons in the system.rsc file.
- This means that one version of XaAES runs in all colour modes, and that
- widgets now appear correctly in 256 colour modes :)
- o Fixed converting selected images of colour icons from one colour depth
- to a higher one.
-
- [9/6/96]
- o After a month of fiddling, finally got XaAES to talk to /dev/moose directly,
- so the seperate mouse server program is no longer required. This speeds
- things up a little as well because the extra overhead for the mouse pipe
- is removed.
- o Sorted out some (if not all) of the problems with Johan's rectangle list code.
-
- [14/6/96]
- o When you click to drop down a menu, you can point at others to pull them down
- as well.
- o "Click...hold...select-on-release" type selections added to the menubar handler.
- o More fixes to rectangle list & window redraws.
-
- =====================================================================================
- Memory protection almost works now. Something in shel_write() breaks
- it if you issue shel_write() from any program apart from XaAES. It's
- strange, because the initial shel_write() calls when parsing xaaes.cnf
- don't break memory protection, but if you try to run something from
- Thing, XaAES will violate memory protection?
- =====================================================================================
-
- [16/6/96]
- o Re-worked the object display code to use a jump table to seperate
- routines for each object type instead of the massive switch()
- statements that were used before. This makes it easier to add new
- object types and makes things a great easier to maintain (the old
- version of display_object() was a real mess).
- o Started adding new object type G_SLIST (scrolling list). ob_spec
- should point to a SCROLL_INFO structure, which describes the actual
- list. New functions in scrlobjc.c provide creation/addition/deletion
- support for scrolling list entries (as there will never be a
- resource editor that supports them). I'll add an AES call interface
- to these routines later.
-
- [9/7/96]
- o Added 'real-time' scrolling when dragging window sliders. This is a fairly minor
- mod in SCRLWIDG.C that uses the same set_widget_active() method as the arrow
- widgets. This option can be disabled in XA_DEFS.H using the REALTIME_SCROLL switch.
-
- [10/7/96]
- o Left hand button is now 'real-time' scroll, right is standard GEM scroll.
-
-
- [24/7/96]
- o Finished debugging realtime scrolling.
- o G_SLIST objects now display pretty much correctly (in colour).
- o Added "Task Manager" window, partly as I think it'll be useful
- and partly to test the G_SLIST object type (list of current
- AES clients).
- o ALT+CTRL+L now opens the Task Manager.
-
- ========================================================================
- [2/8/96]
- Got NVDI4 - argggh, now I know why people complain that XaAES
- doesn't work very well with NVDI....stuff that worked with NVDI2.5
- doesn't work at all with NVDI4.
- ========================================================================
-
- [6/8/96]
- o Fixed NVDI4 compatibility.
- o Reworked video mode select switches. -video now does ST/TT modes,
- new switch -fvideo does falcon special modes (via VsetScreen).
- Falcon owners can now access a decent selection of modes (like,
- 2/4/16/256 color & loads of res's).
-
- ========================================================================
- [8/8/96]
- Finally finished reboxing my falcon into an old Mac II box. They're a
- perfect size to fit a falcon into.....now I can get back to doing some
- serious work :)
- ========================================================================
-
- [19/9/96]
- o Bit of a boob here - I managed to delete the latest history file,
- so I've reverted to a backup (oops). So, a summary of what got done
- before now:
- - File selector (uses Tamminen Eero's directory code with my own
- wildcards + scroller)
- - Scroll list objects with icons
- - Task manager kill function
- - Launch app
- - lots of minor bugfixes (but I cann't remember what they were).
-
- [23/9/96]
- o Finally fixed the bug in shell_write() that was breaking the
- memory protection...you can now run XaAES with MiNT memory
- protection active!!!
-
- ========================================================================
- [16/10/96]
- Deleted the hostory file by accident (again). Bugger. Here is a
- backup, with several of my most recent mods deleted.
- ========================================================================
-
- [16/10/96]
- o Finished a (very) wide ranging overhall of the rectangle list
- handling. Reasons being:
- 1) My original scheme did naughty things like calling malloc() as a
- result of wind_get() when generating WF_FIRSTXYWH. Ok when the
- command pipe was used for everything, a real no-no when wind_get()
- is called via the CALL_DIRECT method to improve performance. And
- worse, my original code was dog slow as it re-generated the lists
- every time they were used, and called malloc() for every entry
- in every list individually.
- 2) Johan's rect handling scheme also suffered from dodgy malloc's
- in wind_get(), but not to the same extent as my original code. It
- was quicker as it re-used lists instead of regenerating every time,
- and used a block allocation scheme for list storage. Much faster,
- but the display bugs from it were pretty bad (I never managed to
- chase them all).
-
- The new rectangle list handler takes the best ideas from Johan's
- code and incorporates them into a new scheme. Features of
- the new scheme are:
- - Memory is block allocated for each list via a single malloc().
- - Lists are re-used.
- - Lists are only re-generated when they have to be. The regeneration
- is more intelligent than the old verion in Johan's code as it
- uses a changed rectangle test as well as the original lower
- window test to check which windows have invalid lists.
- - The display glitches that dogged the last release are (I hope)
- all gone now.
- - No lists are generated (hence no memory is allocated) from within
- wind_get() so there is no danger of wind_get() breaking memory
- protection.
-
- This has taken bloody ages to do....the rect list stuff is integral
- to almost every aspect of the system!!!
-
- [16/10/96]
- o MiNT memory protection compatibility. Hurray for our side. The
- wind_get() generate_rectlist() calls were what was killing XaAES
- with memory protection turned on (it resulted in clients mallocing
- memory that would be tied into OS level structures but owned by
- client processes). Ta Da :) it works.....now, gotta do some thinking
- about intercepting VA_PROTOCOL messages and copying them into
- global tagged memory buffers to stop VA_PROTOCOL from breaking
- mem protection.....
-
- [17/10/96]
- o Added new functions to c_window.c for move and close windows. Should
- have done it ages ago really.... XAwind_set(WF_CURRXYWH) now
- just calls move_window() and XAwind_close() calls close_window().
-
- [19/10/96]
- o Added blit support to the move_window() function - top window only,
- as handling the rect lists for non-top windows will need some
- thought. It still makes things 'feel' much faster though as the
- most common window move is the top one....
-
- ========================================================================
- [20/10/96]
- Beta 6 Released
- ========================================================================
-